/**
 * 数据权限枚举
 *
 * @author xulh
 * @since 2024/03/11
 */
export class DataScopeEnum {
  /**
   * value 越小，权限越大
   */
  static ALL: BaseEnum = { value: 0, label: '所有数据' };
  static DEPT_AND_SUB: BaseEnum = { value: 1, label: '部门及子部门数据' };
  static DEPT: BaseEnum = { value: 2, label: '部门数据' };
  static SELF: BaseEnum = { value: 3, label: '本人数据' };
  value: number;
  label: string;
  DataScopeEnum(value: number, label: string) {
    this.value = value;
    this.label = label;
  }
  // 静态方法，根据 label 获取 value 值
  static getValueByLabel(label: string): number | undefined {
    // 遍历 GenderEnum 类的所有静态属性
    for (const key in DataScopeEnum) {
      if (DataScopeEnum.hasOwnProperty(key)) {
        const enumValue = DataScopeEnum[key] as BaseEnum;
        if (enumValue.label === label) {
          return enumValue.value;
        }
      }
    }
    return undefined; // 如果没有找到匹配的 label，则返回 undefined
  }

  // 静态方法，根据 value 获取 label 值
  static getLabelByValue(value: number): string | undefined {
    // 遍历 GenderEnum 类的所有静态属性
    for (const key in DataScopeEnum) {
      if (DataScopeEnum.hasOwnProperty(key)) {
        const enumValue = DataScopeEnum[key] as BaseEnum;
        if (enumValue.value === value) {
          return enumValue.label;
        }
      }
    }
    return undefined; // 如果没有找到匹配的 label，则返回 undefined
  }
}
